package us.proyecto.canarios.actions.concursos;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.FlushModeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelectionIndex;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.log.Log;

import us.proyecto.canarios.actions.usuarios.ConsultaUsuarioAction;
import us.proyecto.canarios.dao.ConcursoDAO;
import us.proyecto.canarios.dao.UsuarioDAO;
import us.proyecto.canarios.domain.Asociacion;
import us.proyecto.canarios.domain.Concurso;
import us.proyecto.canarios.domain.Usuario;

@Name("consultaConcurso")
@Scope(ScopeType.SESSION)
public class ConsultaConcursoAction {

    @Logger
    Log log;

    private String nombre;
    private Asociacion asociacion;
    private Date fechaInicio;
    private Date fechaFin;


    @In(create = true)
    private UsuarioDAO usuarioDAO;

    @DataModel("listaConcursos")
    private List<Concurso> listaConcursos;
    @DataModelSelectionIndex("listaConcursos")
    private int index;

    private List<Asociacion> listaAsociaciones;

    @In(create = true)
	private ConcursoDAO concursoDAO;

    private boolean consulta;

    @In(create = true, required = false)
	 private Usuario user;


    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void buscar() {
        String where = new String(" 1 = 1 ");
        if(asociacion!=null){
        	where = where + " and c.asociacion.idAsociacion = "+ asociacion.getIdAsociacion();
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if(fechaInicio!=null){
        	where = where + " and c.fechaInicio <= '" + sdf.format(fechaInicio)+"'";
        }
        if(fechaFin!=null){
        	where = where + " and c.fechaInicio >= '" + sdf.format(fechaFin)+"'";
        }
        listaConcursos = concursoDAO.getListByWhere(where);
        if(listaConcursos == null || listaConcursos.size()==0){
        	FacesMessages.instance().add("No hay concursos que coincidan con los criterios introducidos");
        }

    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public String traduce(String s){
        String res="";
        if(s.equals("true")){
            res="Si";
        }else{
            res="No";
        }
        return res;

    }

    @Begin(join = true, flushMode=FlushModeType.MANUAL)
    public void gestion(){
    	listaAsociaciones = usuarioDAO.getAsociaciones();
    	fechaFin = null;
    	fechaInicio = null;
    	if(user == null || user.getIdUsuario()==0){
			consulta = true;
		}else{
			consulta = false;
		}
    }

	/**
	 * @return the asociacion
	 */
	public Asociacion getAsociacion() {
		return asociacion;
	}

	/**
	 * @param asociacion the asociacion to set
	 */
	public void setAsociacion(Asociacion asociacion) {
		this.asociacion = asociacion;
	}

	/**
	 * @return the fechaInicio
	 */
	public Date getFechaInicio() {
		return fechaInicio;
	}

	/**
	 * @param fechaInicio the fechaInicio to set
	 */
	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	/**
	 * @return the fechaFin
	 */
	public Date getFechaFin() {
		return fechaFin;
	}

	/**
	 * @param fechaFin the fechaFin to set
	 */
	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	/**
	 * @return the listaConcursos
	 */
	public List<Concurso> getListaConcursos() {
		return listaConcursos;
	}

	/**
	 * @param listaConcursos the listaConcursos to set
	 */
	public void setListaConcursos(List<Concurso> listaConcursos) {
		this.listaConcursos = listaConcursos;
	}

	/**
	 * @return the listaAsociaciones
	 */
	public List<Asociacion> getListaAsociaciones() {
		return listaAsociaciones;
	}

	/**
	 * @param listaAsociaciones the listaAsociaciones to set
	 */
	public void setListaAsociaciones(List<Asociacion> listaAsociaciones) {
		this.listaAsociaciones = listaAsociaciones;
	}

	public boolean isConsulta() {
		return consulta;
	}

	public void setConsulta(boolean consulta) {
		this.consulta = consulta;
	}




}

